package com.xhj.mybatis.executor.keygen;

import com.xhj.mybatis.executor.Executor;
import com.xhj.mybatis.mapping.MappedStatement;

import java.sql.Statement;

/**
 * NoKeyGenerator
 *
 * @author XJks
 * @description NoKeyGenerator 类用于表示不生成主键的情况。
 */
public class NoKeyGenerator implements KeyGenerator {

    /**
     * 这是一个共享的 NoKeyGenerator 实例。
     * 使用单例模式，避免重复创建对象。
     * 可通过 NoKeyGenerator.INSTANCE 直接获取实例。
     */
    public static final NoKeyGenerator INSTANCE = new NoKeyGenerator();

    /**
     * 在执行 SQL 语句之前调用的方法。
     * 由于不需要生成主键，这里什么都不做。
     *
     * @param executor  执行器对象，用于执行 SQL
     * @param ms        映射的 SQL 语句对象
     * @param stmt      JDBC Statement 对象
     * @param parameter SQL 参数对象
     */
    @Override
    public void processBefore(Executor executor, MappedStatement ms, Statement stmt, Object parameter) {
        // 不做任何操作
    }

    /**
     * 在执行 SQL 语句之后调用的方法。
     * 由于不需要生成主键，这里什么都不做。
     *
     * @param executor  执行器对象，用于执行 SQL
     * @param ms        映射的 SQL 语句对象
     * @param stmt      JDBC Statement 对象
     * @param parameter SQL 参数对象
     */
    @Override
    public void processAfter(Executor executor, MappedStatement ms, Statement stmt, Object parameter) {
        // 不做任何操作
    }

}
